package com.doitedu.day01

/**
 *
 * alt+7  查看一个类的所有的方法和属性
 * @Date 22.6.19
 * @Created by HANGGE
 * @Description
 *             方法: 是一段功能性的代码 实现代码的重复利用
 *           方法是用来处理数据的  :接收的数据  :返回的数据
 *                              (方法的参数)  (返回值)
 *            方法的定义格式:
 *            1)  def 方法名(参数类型列表):返回值类型={方法体}   √
 *            2)  def 方法名(参数类型列表)={方法体}   自动推导返回值  √
 *            3) 如果方法是没有返回数据 def 方法名(参数类型列表){方法体}
 */
object _06方法练习 {
  val msg = "hello"
  // 三个Int数值的和  返回值
  def  add(a:Int,b:Int,c:Int):Int={
    return  a+b+c
  }
 val function2 =  (a:Int,b:Int,c:Int)=>a+b+c
  // 两个字符串拼接   返回值
  def concat(str1:String ,str2:String):String={
    // return 可以省略
     str1+str2
  }
  // 两个Double的最大值  返回值
  def max(x:Double , y:Double):Double = {
    if (x > y) x  else  y
  }
  // n个Int数值求和  返回值
  def  addPlus(n:Int*)={  // 底层是数组
    var sum = 0
    for (elem <- n) { // 遍历每个参数
      sum+=elem
    }
    // 最后一行返回
    sum
  }

  val function3 = ()=>{println("helo")}
  // 没有参数  没有返回值的方法  单纯的打印 "hello"
  def  show1(){
    println("hello")
  }

  def  show2{
    println("hello")
  }

  // 没有参数   有返回值  单纯的返回 "hello"
  def get1()={
    "hello"
  }

  def get2():String={
    "hello"
  }

  def get3:String={
    "hello"
  }

  def get4={
    "hello"
  }

  // 有参数  没有返回值   单纯的打印 参数
  def  myPrint1(name:String,age:Int,gender:String): Unit ={
    println(s"$name $age $gender")
  }

  val function4 = (name:String,age:Int,gender:String)=>{
    println(s"$name $age $gender")
  }


  def  myPrint2(name:String,age:Int,gender:String) ={
    println(s"$name $age $gender")
  }

  def  myPrint3(name:String,age:Int,gender:String) {
    println(s"$name $age $gender")
  }


  def main(args: Array[String]): Unit = {
    println(add(1, 2, 3))
    println(concat("java-->", "yuge"))
    println(max(12.12, 11.11))
    // 方法没有声明返回值  自动的推导出返回值是Int
    println(addPlus(2, 3, 5, 10)) // 可变参数
    show1()
    show1  // 调用没有参数的方法  ()可以省略
  //  show2()方法在定义的时候  空参方法没有写()  调用的时候不能写
    show2  // 调用空参方法的时候可以省略()

    println(get1)
    println(get2)
    println(get3)
    println(get4)
    myPrint2("zss",21,"M")

  }





}
